// 通知服务 - 提供全局访问通知组件的方法
class NotificationService {
  constructor() {
    this.notificationStack = null
  }

  // 设置通知组件引用
  setNotificationStack(stack) {
    this.notificationStack = stack
  }

  // 添加成功通知
  success(message) {
    this.addNotification({
      type: 'success',
      message
    })
  }

  // 添加警告通知
  warning(message) {
    this.addNotification({
      type: 'warning',
      message
    })
  }

  // 添加错误通知
  error(message) {
    this.addNotification({
      type: 'error',
      message
    })
  }

  // 添加信息通知
  info(message) {
    this.addNotification({
      type: 'info',
      message
    })
  }

  // 添加通知的通用方法
  addNotification(notification) {
    if (this.notificationStack && this.notificationStack.addNotification) {
      this.notificationStack.addNotification(notification)
    } else {
      console.warn('通知组件未初始化')
    }
  }

  // 移除指定通知
  removeNotification(id) {
    if (this.notificationStack && this.notificationStack.removeNotification) {
      this.notificationStack.removeNotification(id)
    }
  }

  // 清空所有通知
  clearAll() {
    if (this.notificationStack && this.notificationStack.clearAllNotifications) {
      this.notificationStack.clearAllNotifications()
    }
  }
}

// 创建单例实例
const notificationService = new NotificationService()

// 导出服务
export default notificationService

// 为了方便使用，导出一个安装函数，用于在Vue应用中注册
export const NotificationPlugin = {
  install(app) {
    // 提供全局服务
    app.provide('notification', notificationService)
    // 添加到全局属性，方便在组件中通过 this.$notification 访问
    app.config.globalProperties.$notification = notificationService
  }
}